package euler.p051_100;

import euler.MainEuler;

public class Euler097 extends MainEuler {

    /*
        The first known prime found to exceed
        one million digits was discovered in 1999,
        and is a Mersenne prime of the form 2^6972593−1;
        it contains exactly 2,098,960 digits.

        Subsequently other Mersenne primes, of the form 2^p−1,
        have been found which contain more digits.

        However, in 2004 there was found a massive non-Mersenne
        prime which contains 2,357,207 digits: 28433×2^7830457+1.

        Find the last ten digits of this prime number.

     */
    public String resolve() {
        long mod = 10000000000l;

        long digitos = 1;

        for (int i = 0; i < 7830457; i++) {
            digitos = (2 * digitos) % mod;
        }

        digitos = (28433 * digitos) % mod;

        return String.valueOf(digitos+1);
        // 8739992577
    }

}
